An optical network is a collection of optical network devices interconnected by links made up of optical fibers. Thus, an optical network is a network in which the physical layer technology is fiber-optic cable. Cable trunks are interconnected with optical cross-connects (OXCs), and signals are added and dropped at optical add/drop multiplexers (OADMs). The optical network devices that allow traffic to enter and/or exit the optical network are referred to as optical network elements; in contrast, any optical network devices that do not are referred to as pass-thru nodes (an optical network need not have any pass-thru nodes). Each optical link interconnects two optical network devices and typically includes an optical fiber to carry traffic in both directions. There may be multiple optical links between two optical network devices.
A given fiber can carry multiple communication channels simultaneously through a technique called wavelength division multiplexing (WDM), which is a form of frequency division multiplexing (FDM). When implementing WDM, each of multiple carrier wavelengths (or, equivalently, frequencies or colors) is used to provide a communication channel. Thus, a single fiber looks like multiple virtual fibers, with each virtual fiber carrying a different data stream. Each of these data streams may be a single data stream, or may be a time division multiplex (TDM) data stream. Each of the wavelengths used for these channels is often referred to as a lambda.
Typically, an optical network device includes multiple component modules which may be arranged in one or more shelves. One conventional approach to implement inter-module communications is to maintain a dedicated processor within each module to handle the inter-module communications. However, this results in more software overhead to process the packets, more cost and power consumption, and more components. Another approach is to invoking a bus technology, such as PCI, to support the inter-module communications. However, this approach requires larger connectors and components. It may also require special pins per slot to accommodate control of back-end power and module presence.
In addition, the inter-module communications may further require run-time verification of the packets transmitted. Typical error detections include parity checking, checksum, ECC (error correction codes), and redundant circuit operations. Parity determines whether a word of data is odd or even in terms of number of “1” bits. Parity generator then sets the parity bit to make the total of all bits (including the parity bit) always odd or even depending on the algorithms used. The receiver of the data performs the similar algorithm (including the parity bit) and indicates an error if it does not come out to be the value expected.
Checksum and SHA use more complex algorithm on larger packets and then write the resultant bytes of data at the end of the packet. The receiver of the data performs the similar algorithm (not including the checksum) and indicates an error if it does not come out of the same value as received. ECC uses a very complex algorithm to generate bits sent with the data. The receiver of the data performs the similar algorithm (including the ECC bits) and indicates an error if it does not come out to be the value expected, but is also able to make use of the ECC bits to correct at least one incorrect bit. Redundant circuits use the deceptively simple technique of having multiple identical circuits performing the same task with an additional “voting” circuit to determine if one of the circuits disagrees with the others.
Although the above methods can produce similar results, however, these methods are either complicated and require relatively higher cost to implement, or alternatively less complete to provide reliable error detections.